home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Text⁄Files / Writeswell Jr. 1.0.2 Master / WSI Library Source / MyGestalt.c < prev    next >
Text File  |  1992-04-23  |  2KB  |  91 lines

  1. /* MyGestalt.c
  2.  * Wrapper functions that call Gestalt for various purposes.
  3.  * ©1992 Working Software, Inc.
  4.  * This source code is copyrighted.  Permission is granted to use the Word Services
  5.  * portion of the Writeswell Jr. source code in your own programs, but you 
  6.  * may not distribute the Writeswell Jr. word-processor code as a 
  7.  * commercial product.  If you modify the code, please do not call it 
  8.  * Writeswell Jr. (or Writeswell.)  This will ensure that people understand the 
  9.  * program and don’t have to deal with a number of different versions with 
  10.  * who-knows-what going on in the code.
  11.  * 
  12.  * Writeswell Jr. and Writeswell are trademarks of Working Software, Inc.
  13.  * 1 Aug 91 Mike Crawford
  14.  */
  15.  
  16. #include <Traps.h>
  17. #include <GestaltEqu.h>
  18. #include "MyGestalt.h"
  19. #include "TrapAvail.h"
  20.  
  21. Boolean System7Installed( void )
  22. {
  23.     OSErr err;
  24.     long response;
  25.     
  26.     if ( !TrapAvailable( _GestaltDispatch ) )
  27.         return false;
  28.     
  29.     /* Note that one is not supposed to infer the existence of a particular
  30.      * software feature from the system version.  To use the alias manager, for
  31.      * example, we should check for it explicitly.
  32.      */
  33.  
  34.     err = Gestalt( gestaltSystemVersion, &response );
  35.     if ( err )
  36.         return false;
  37.     
  38.     /* Gotcha! The < binds tighter than the &, so we must parenthesize! */
  39.  
  40.     if ( ( response & 0x00000f00 ) < 0x00000700 )
  41.         return false;
  42.  
  43.     return true;
  44. }
  45.  
  46. Boolean AliasMgrPresent( void )
  47. {
  48.     OSErr err;
  49.     long response;
  50.     long bitMask;
  51.     
  52.     /* One should have already checked for Gestalt's existence before calling this */
  53.     err = Gestalt( gestaltAliasMgrAttr, &response );
  54.     if ( err )
  55.         return false;
  56.     
  57.     /* Bit 0 is set in the response if the manager is present */
  58.  
  59.     bitMask = 1;
  60.     bitMask << gestaltAliasMgrPresent;
  61.  
  62.     if ( response & gestaltAliasMgrPresent )
  63.         return true;
  64.     
  65.     return false;
  66.     
  67. }/* AliasMgrPresent */
  68.  
  69. Boolean FindFolderPresent( void )
  70. {
  71.     OSErr err;
  72.     long response;
  73.     long bitMask;
  74.     
  75.     /* One should have already checked for Gestalt's existence before calling this */
  76.     err = Gestalt( gestaltFindFolderAttr, &response );
  77.     if ( err )
  78.         return false;
  79.     
  80.     /* Bit 0 is set in the response if the manager is present */
  81.  
  82.     bitMask = 1;
  83.     bitMask << gestaltFindFolderPresent;
  84.     
  85.     if ( response & bitMask )
  86.         return true;
  87.     
  88.     return false;
  89.     
  90. }/* FindFolderPresent */
  91.